package com.knowif.util.commonUtil;

import java.io.File;

/**
 * 文件工具类
 * @author xingyao
 * @time 2017年4月5日 下午5:53:46
 * @describe
 */
public class FileUtil {
	
	/**
	 * 得到文件名的后缀
	 * @author xingyao
	 * @date 2017年4月5日
	 * @describe
	 * @param fileName 文件名
	 * @return
	 */
	public static String getFileSuffix(String fileName){
		if(StringUtil.isEmpty(fileName)){
			return "";
		}
		int pointIndex = fileName.lastIndexOf(".");
		if(pointIndex == -1){
			return "";
		}
		String suffix = fileName.substring(pointIndex, fileName.length());
		return suffix;
	}
	
	/**
	 * 得到文件名称  包含后缀
	 * @author xingyao
	 * @date 2017年4月27日
	 * @describe
	 * @param PathFileName
	 * @return
	 */
	public static String getName(String PathFileName){
		if(StringUtil.isEmpty(PathFileName)){
			return null;
		}
		int index = PathFileName.lastIndexOf("/");
		String fileName = PathFileName.substring(index+1, PathFileName.length());
		return fileName;
	}
	
	/**
	 * 移除相同的字符串
	 * @author xingyao
	 * @date 2017年4月27日
	 * @describe
	 * @param str
	 * @return
	 */
	public static String removeSeparator(String fileName){
		int index = fileName.lastIndexOf("\\");
		fileName = fileName.substring(index+1, fileName.length());
		return fileName;
	}
	
	public static boolean isImage(String fileName){
		String suffix = getFileSuffix(fileName);
		if(".jpg".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".png".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".BMP".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".JPEG".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".GIF".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".TIFF".equalsIgnoreCase(suffix)){
			return true;
		}
		return false;
	}
	
	
	public static boolean isCompressFile(String fileName){
		String suffix = getFileSuffix(fileName);
		if(".zip".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".7z".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".rar".equalsIgnoreCase(suffix)){
			return true;
		}
		if(".cab".equalsIgnoreCase(suffix)){
			return true;
		}
		return false;
	}
	
	
	/**
	 * 如果执行的文件不存在，则创建文件的路径
	 * @author xingyao
	 * @date 2017年4月5日
	 * @describe
	 * @param filePath
	 * @return
	 */
	public static boolean fileNotExist2Create(String filePath){
		if(StringUtil.isEmpty(filePath)){
			return false;
		}
		int pointIndex = filePath.lastIndexOf(".");
		String notPointFilePath = "";
		if(pointIndex != -1){
			int spritIndex = filePath.lastIndexOf("/");
			if(spritIndex == -1){
				return true;
			}else{
				notPointFilePath =filePath.substring(0, spritIndex);
			}
		}
		if(StringUtil.isEmpty(notPointFilePath)){
			notPointFilePath = filePath;
		}
		File file = new File(notPointFilePath);
		if(!file.exists()){
			file.mkdirs();
		}
		return true;
	}
	
	/**
	 * 通过文件地址删除文件
	 * @author xingyao
	 * @date 2017年4月16日
	 * @describe
	 * @param filePath
	 * @return
	 */
	public static boolean deleteImage(String filePath){
		if(StringUtil.isEmpty(filePath) || !isImage(filePath)){
			return true;
		}
		File f = new File(filePath);  // 输入要删除的文件位置
		if(f.exists()){
			return f.delete();
		}
		return false;
	}
	
	/**
	 * 删除文件夹
	 * @author xingyao
	 * @date 2017年4月26日
	 * @describe
	 * @param path
	 */
	public static void deleteAllFilesOfDir(File path) {  
	    if (!path.exists())  
	        return;  
	    if (path.isFile()) {  
	        path.delete();  
	        return;  
	    }  
	    File[] files = path.listFiles();  
	    for (int i = 0; i < files.length; i++) {  
	        deleteAllFilesOfDir(files[i]);  
	    }  
	    path.delete();  
	}  
	
	/**
	 * 删除文件夹
	 * @author xingyao
	 * @date 2017年4月26日
	 * @describe
	 * @param path
	 */
	public static boolean deleteAllFilesOfDir(String filePath) {  
		File path = new File(filePath);
		if (!path.exists())  
			return true;  
		if (path.isFile()) {  
			return path.delete();  
		}  
		File[] files = path.listFiles();  
		for (int i = 0; i < files.length; i++) {  
			deleteAllFilesOfDir(files[i]);  
		}  
		return path.delete();  
	}  
	
	
	/**
	 * 判断文件的大小是否符合上传的标准
	 * @author xingyao
	 * @date 2017年4月16日
	 * @describe
	 * @param fileSize
	 * @param OkFileSize
	 * @return
	 */
	public static boolean isOkSize(long fileSize,long OkFileSize){
		if(fileSize <= 0 || OkFileSize <= 0){
			return false;
		}
		if(fileSize > 0 && fileSize <= OkFileSize){
			return true;
		}
		return false;
	}
	
	
	public static String getProjectPath(){
		String path = FileUtil.class.getClassLoader().getResource("").toString();
		path = path.replace("file:/", "");
		if(path.endsWith("/")){
			path = path.substring(0, path.lastIndexOf("/"));
		}
		return path;
	}
}
